1. Field of the Invention
This invention generally relates to data transfer between asynchronous clock domains, and more specifically, to reducing the latency in such data transfers.
2. Background Art
Asynchronous data transfers have become very common in many integrated circuit devices, such as ASICs and SoCs, today. In particular, various components or subsystems utilized for the construction of an integrated circuit may independently operate at different frequencies, such as in microprocessors and micro-controllers, where certain components or subsystems have a faster rate of operation than the operating frequencies of other system components or subsystems. Therefore, typically, it is desirable to devise integrated circuits with the ability to support multiple domains, which may operate at different frequencies.
For instance, many integrated circuits include a number of electronic circuits referred to as “clocked logic domains” that operate independently based on electrical “timing” or “clock” signals. Such clock signals are used to control and coordinate the activities of various components or subsystems.
A particular device interface, or bus operating at a specific frequency, may define a distinct clocked logic domain. A variety of clocked systems may include one or more clock synthesizers, clock controllers or timers, such as a real time clock generator, an operating system timer, or an analog to digital converter controller that may require synchronizing transfer of multiple bits of data between asynchronous clock domains. However, synchronization of data transfer, particularly between various clocked logic domains, presents a number of problems.
While transferring digital data or signals between multiple clocked logic domains in a clocked system, one problem involves synchronization, such as by using storage elements or other hardware so that the timing of the digital data or signals transmitted is properly aligned at the receiving end. In doing so, the data or signals being transferred from one clocked logic domain may be delayed by one or more clock cycles so that the data or signals may be synchronized with the clock signals in another clocked logic domain, as an example. However, providing such synchronization may cause undesirable and sometimes unpredictable delays in the communications path or the data path. This may result in significant performance degradation and/or lack of data or signal integrity.
Since there will not be a fixed relationship between the active edge of the launch clock and the capture clock, there is a possibility of having setup or hold violations in the capture flip-flop, causing meta-stability. To avoid meta-stability in asynchronous data transfer, a commonly adopted technique is to double latch (also called double stage synchronization, or double flopping) the clock domain crossing signal at the receive domain clock frequency. Double flopping involves passing an asynchronous signal(s) through a pair of edge triggered D-Flip-flops or some equivalent storage element. If the receiving clock frequency is considerably less than the transmitting clock frequency, there is a huge latency involved in the double flopping process, often up to 20 or more clock cycles in the higher frequency domain. This situation frequently arises with slower devices, like a Flash Memory controller, being used in ASICs that have a majority of the components running at a much higher clock frequency.
Any reduction in the clock domain-crossing overhead tremendously reduces the data transfer latencies and increases the overall system performance.